package cn.iocoder.yudao.framework.web.core.version;

import org.springframework.web.bind.annotation.Mapping;

import java.lang.annotation.*;


/**
 * API 版本注解
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({
        ElementType.TYPE,
        ElementType.METHOD
})
@Documented
@Mapping
public @interface ApiVersion {
    String value() default ApiVersion.DEFAULT_API_VERSION;
    /**
     * 版本路径类型
     * {@link ApiVersionPathType}
     * @return
     */
    ApiVersionPathType type() default ApiVersionPathType.STATIC;
    /**
     * 是否忽略进行版本控制
     * 全局版本控制下，可以忽略某一个类，不进行控制
     * @return
     */
    boolean ignore() default false;

    ApiVersionAccessPolicyEnum accessPolicy() default ApiVersionAccessPolicyEnum.SAME_VERSION_ACCESS;

    /**
     * 默认版本号：v1
     */
    String DEFAULT_API_VERSION = VersionConstants.V1;

}
